<div class='content'>
	<h2>路线图</h2>
	<p>其他人的博客 C/汇编/算法:
		<a target='_blank' href="https://github.com/yifengyou/learn-c" title="懂汇编的娃才能学好C语言">汇编与C语言</a> |

		<a target='_blank' href="https://github.com/codeIIEST/Algorithms">Algorithms</a> |
	</p>

	<p>我的笔记:
		<a target='_blank' href="https://github.com/DawnEve/learn_C">learn_C(win7)</a> |
		<a target='_blank' href="https://github.com/miostudio/linux_C" class="button pink">linux_C(Ubuntu)</a> |
	</p>






	<h2>C语言</h2>
	<p>C/C++：万物基石。站在基石之上，向左一步是Rust，向右一步是Lua。</p>

	<p>Haskell: 当代码达到一定规模，复杂到一定程度的时候，你隐隐约约知道自己可能会掌控不了，但又不知道该如何破局。</p>
	<p>能让自己吃饭的语言：JS 或 Java，让你在中国吃程序员这碗饭问题不大。</p>
	<pre class="saying">站在山顶和站在山脚的两个人，在对方眼里，同样渺小。</pre>


	<p>推荐书： 288页的《C程序设计语言》 丹尼斯。1. <a target='_blank' href="https://www.dipmat.univpm.it/~demeio/public/the_c_programming_language_2.pdf">The C Programming Language</a>(by Dennis Ritchie) 用精简到极致的语言，写了C语言中的精华。2. c语言的设计者所写的书，理应算是圣经。其次，这本书只有两百多页，足够简洁明了，大量冗余内容是不能被称为经典的。
关于阅读它，最好是逐字逐句，如果语言没有障碍的话，还是读原文较好。simple+power+beautiful 一定要读英文原版。
也有人认为太古老了，转而推荐《C语言程序设计：现代方法》。</p>

	<p>《K&R》400页经典书 <a target="_blank" href="https://www.freetechbooks.com/c-programming-tutorial-k-r-version-4-t219.html">C Programming Tutorial (K&R version 4)</a>: A C programming tutorial for people who have a little experience with an interpreted programming language, such as Emacs Lisp or a GNU shell. </p>

	<p><a target='_blank' href='http://www.cprogramming.com/'>c and c++</a>: C is a powerful system programming language, and C++ is an excellent general purpose programming language with modern bells and whistles.</p>
	<p><b class=red>「内存 + 进程 + 线程」</b>这几个最基本的计算机概念是菜鸟和大神的分水岭，也只有学习C语言才能透彻地理解它们。</p>



	<p>练习基本功（<b class=red>数据结构，算法，操作系统</b>）的时候用C，便于理解。>> Learn More: </p>
	<p><b>数据结构与算法</b>:
		<a target='_blank' href="https://www.geeksforgeeks.org/what-is-data-structure-types-classifications-and-applications/">数据结构</a>,
		<a target='_blank' href="https://github.com/keshiim/Learn-algorithms">Learn-algorithms</a>,

	</p>



	<p><b>进程</b>:
		<a target='_blank' href="https://programming.vip/docs/c-processes-and-threads.html">processes-and-threads</a>,

	</p>



	<p><b>好书推荐</b>:
		<a target='_blank' href="https://book.douban.com/subject/19952400/">算法（第4版）[Java]</a> |
		<a target='_blank' href="https://read.douban.com/ebook/52186827/">算法图解</a> |
		<a target='_blank' href="https://github.com/ruanyf/free-books">阮一峰 免费书 list</a> |
	</p>


	<hr>
	<p>C语言在线编译、运行工具：
		<a target='_blank' href='https://www.tutorialspoint.com/compile_c_online.php' title='高端服务器 GNU GCC v7.1.1'>tutorialspoint</a>,
		<a target='_blank' href='https://www.jdoodle.com/c-online-compiler/' title='可以选择gcc版本号'>jdoodle</a>,
		<a target='_blank' href='https://repl.it/languages/c' title='可以看到文件结构，可建多文件'>Repl</a>,
		<a target='_blank' href='https://c.runoob.com/compile/11'>菜鸟教程</a>,
		<a target='_blank' href='http://codepad.org/'>codepad</a>,
		<a target='_blank' href='https://rextester.com/l/c_online_compiler_gcc'>rextester</a>,
		<a target='_blank' href='http://cpp.sh/'>cpp.sh</a>,
		<a target='_blank' href='https://paiza.io/en/projects/new?language=c' title='输入区很长，可建多文件'>paiza.io</a>,
		|
		<a target='_blank' href='https://www.onlinegdb.com/online_c_compiler' title="可建多文件，反应太慢">OnlineGDB</a>,
		<a target='_blank' href='http://ideone.com/' title="需要跳转，反应太慢">IDEone</a>,
		|
		<a target='_blank' href='https://code.noxue.com/' title="支持很多语言">noxue.com</a>,
	</p>














	<h3>选择一个开发语言，需要从三个效率来考量</h3>
	<p>1）运行效率：也就是常说的性能，为了和后面两个对比，换个统一的马甲</p>
	<p>2）开发效率：开发投入的时间和产出的代码相比（也可以是业务功能）</p>
	<p>3）学习效率：程序员花费在学习上的时间</p>


	<h3>C语言的用途</h3>
	<p>机器码生汇编，汇编生c，c生万物。整个 GNU 开源组织下的大部分东西都是c语言搞的，上至用户应用，下至系统底层，都能用c来构建。</p>

	<ol>
		<li>写操作系统，linux，windows等常见操作系统的内核，驱动。</li>
		<li>高性能的web服务器如nginx。</li>
		<li>常见数据库，缓存数据库，如redis，<a target="_blank" href="https://github.com/sqlite/sqlite">sqlite</a>。</li>
		<li>常见高级语言解释器如<a target="_blank" href="https://github.com/lua/lua">lua</a>, python, ruby。</li>
		<li>单片机开发: 生活中各种智能设备物联网设备中运行的操作系统和应用，如家用路由器，摄像头。嵌入式开发，最底层的底层映射和基础操作是汇编语言，操作层基本都是用的C去写控制逻辑和串口驱动设置。简单来说，你身边所有智能化设备，物联网设备都是用C开发的。

		<br>[单片机又称单片微控制器，它不是完成某一个逻辑功能的芯片，而是把一个计算机系统集成到一个芯片上。 嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。]</li>
		<li>各种应用程序你都可以使用c来开发，比如linux系统下的绝大部分命令程序和工具都是c开发的，包括你用的ls，cat，tcpdump等等。</li>
	</ol>









</div>